package com.wxassistant.component.wechat;

import cn.zhouyafeng.itchat4j.beans.BaseMsg;
import cn.zhouyafeng.itchat4j.face.IMsgHandlerFace;

import java.lang.reflect.*;

/**
 * Created by huangzihao on 2017/12/14.
 */
public class MsgHandler implements IMsgHandlerFace {
    @Override
    public String textMsgHandle(BaseMsg baseMsg) {
        this.printBaseMsg(baseMsg);
        System.out.println(baseMsg.getContent());
        return TulingRobotHandler.reply(baseMsg);
    }

    @Override
    public String picMsgHandle(BaseMsg baseMsg) {
        this.printBaseMsg(baseMsg);
        return null;
    }

    @Override
    public String voiceMsgHandle(BaseMsg baseMsg) {
        this.printBaseMsg(baseMsg);
        return null;
    }

    @Override
    public String viedoMsgHandle(BaseMsg baseMsg) {
        this.printBaseMsg(baseMsg);
        return null;
    }

    @Override
    public String nameCardMsgHandle(BaseMsg baseMsg) {
        this.printBaseMsg(baseMsg);
        return null;
    }

    @Override
    public void sysMsgHandle(BaseMsg baseMsg) {
        this.printBaseMsg(baseMsg);
    }

    @Override
    public String verifyAddFriendMsgHandle(BaseMsg baseMsg) {
        this.printBaseMsg(baseMsg);
        return null;
    }

    @Override
    public String mediaMsgHandle(BaseMsg baseMsg) {
        this.printBaseMsg(baseMsg);
        return null;
    }

    private void printBaseMsg(BaseMsg baseMsg) {
        try {
            Class<?> c = null;
            c = Class.forName("cn.zhouyafeng.itchat4j.beans.BaseMsg");
            Field[] fields = c.getDeclaredFields();
            for(Field f:fields){
                f.setAccessible(true);
            }
            System.out.println("=============About msg===============");
            for(Field f:fields){
                String field = f.toString().substring(f.toString().lastIndexOf(".")+1);         //取出属性名称
                System.out.println("baseMsg."+field+" --> "+f.get(baseMsg));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}
